什么是伪数组?
是什么
- 拥有 length 属性,但是 length 属性不是动态的,不会随着成员的变化而改变
- 能像数组一样用 [] 去访问 arguments 的元素
- 伪数组是一个 Object,而真实的数组是一个 Array
- 不具有数组的 push(), forEach()所具有的方法
var arrLike = {
0: 'a',
1: 'b',
2: 'c',
length: 3
}
arrLike[1] //'a'
arrLike.length //3
arrLike.push('d') //Uncaught TypeError: arrLike.push is not a function
伪数组举例
- 常见的参数 arguments,
- DOM 对象列表(比如通过 document.getElementsByTags -得到的列表)
- jQuery 对象(比如 $("div"))
伪数组转化成真数组的方法
var arrLike = {
0: 'a',
1: 'b',
2: 'c',
length: 3
}
遍历添加入一个空数组
var arr = []
for (var i = 0; i < arrLike.length; i++) {
arr.push(arrLike[i])
}
利用数组的 slice()方法 【推荐】
;[].slice.call(arrLike)
或者
Array.prototype.slice.apply(arrLike)
修改原型指向
arrLike.__proto__ = Array.prototype
Array.from()方法【推荐】
var arr = Array.from(arrLike)